home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
B-Book Series
/
(k)b6.d64
/
plot'char.l
< prev
next >
Wrap
Text File
|
2007-02-28
|
2KB
|
112 lines
9000 DIM DUMMY$ OF 25
9002 BUILD'SUB
9004 PROC PLOT'CHAR(X,Y,C$,C'SET) CLOSED
9006 IF Y<7 OR Y>199 OR X<0 OR X>312 THEN GOTO EXIT
9008 IY:=199-INT(Y)
9010 P:=INT(X) MOD 8
9012 TWO'TO'P:=2^P; TWO'P'8:=2^(8-P)
9014 S:=7-(IY MOD 8)
9016 COLOR:=PEEK(53281)-240+16*PEEK(646)
9018 C'CD:=ORD(C$)
9020 IF C'CD=255 THEN C'CD:=126
9022 CASE (C'CD DIV 32) OF
9024 WHEN 0,4
9026 C'CD:=32
9028 WHEN 2,5,7
9030 C'CD:=C'CD-64
9032 WHEN 3
9034 C'CD:=C'CD-32
9036 WHEN 6
9038 C'CD:=C'CD-128
9040 OTHERWISE
9042 ENDCASE
9044 CASE C'SET OF
9046 WHEN 0
9048 BASE:=53248
9050 WHEN 1
9052 BASE:=54272
9054 WHEN 2
9056 BASE:=55296
9058 WHEN 3
9060 BASE:=56320
9062 OTHERWISE
9064 ENDCASE
9066 C'ADDR:=8*C'CD+BASE
9068 DIS'INT
9070 I'O:=PEEK(1)
9072 POKE 1,8*(I'O DIV 8)+(I'O MOD 4)
9074 CA:=C'ADDR; R:=IY
9076 CBA:=COLOR'BYTE'ADDR(X,R)
9078 POKE CBA,COLOR
9080 IF P<>0 THEN
9082 POKE CBA+1,COLOR
9084 ENDIF
9086 WHILE R<=IY+S DO
9088 DOTS:=PEEK(CA)
9090 CBA:=CELL'BYTE'ADDR(X,R)
9092 LB:=DOTS DIV TWO'TO'P
9094 AND'BYTE(CBA,LB)
9096 IF P<>0 THEN
9098 RB:=TWO'P'8*(DOTS-LB*TWO'TO'P)
9100 AND'BYTE(CBA+8,RB)
9102 ENDIF
9104 CA:=CA+1; R:=R+1
9106 ENDWHILE
9108 IF S<=7 THEN
9110 CBA:=COLOR'BYTE'ADDR(X,R)
9112 POKE CBA,COLOR
9114 IF P<>0 THEN
9116 POKE CBA+1,COLOR
9118 ENDIF
9120 WHILE R<=IY+7 DO
9122 DOTS:=PEEK(CA)
9124 CBA:=CELL'BYTE'ADDR(X,R)
9126 LB:=DOTS DIV TWO'TO'P
9128 AND'BYTE(CBA,LB)
9130 IF P<>0 THEN
9132 RB:=TWO'P'8*(DOTS-LB*TWO'TO'P)
9134 AND'BYTE(CBA+8,RB)
9136 ENDIF
9138 CA:=CA+1; R:=R+1
9140 ENDWHILE
9142 ENDIF
9144 POKE 1,PEEK(1)+4
9146 ENA'INT
9148 EXIT:
9150 ENDPROC PLOT'CHAR
9152 //
9154 FUNC CELL'BYTE'ADDR(X,IY) CLOSED
9156 RETURN 57344+320*(IY DIV 8)+8*(X DIV 8)+(IY MOD 8)
9158 ENDFUNC CELL'BYTE'ADDR
9160 //
9162 FUNC COLOR'BYTE'ADDR(X,IY) CLOSED
9164 RETURN 55296+40*(IY DIV 8)+X DIV 8
9166 ENDFUNC COLOR'BYTE'ADDR
9168 //
9170 PROC DIS'INT CLOSED
9172 POKE 56334,2*(PEEK(56334) DIV 2)
9174 ENDPROC DIS'INT
9176 //
9178 PROC ENA'INT CLOSED
9180 POKE 56334,PEEK(56334)+1
9182 ENDPROC ENA'INT
9184 //
9186 PROC AND'BYTE(ADDR,BYTE) CLOSED
9188 POKE 251,(ADDR MOD 256)
9190 POKE 252,(ADDR DIV 256)
9192 POKE 253,BYTE
9194 SYS 45031
9196 ENDPROC AND'BYTE
9198 //
9200 PROC BUILD'SUB CLOSED
9202 B:=45031
9204 FOR A:=B TO B+24 DO
9206 READ N
9208 POKE A,N
9210 ENDFOR A
9212 DATA 120,165,1,133,254,41,249
9214 DATA 9,1,133,1,160,0,177,251
9216 DATA 5,253,145,251
9218 DATA 165,254,133,1,88,96
9220 ENDPROC BUILD'SUB